/*
 * Cada site possui seu proprio conjunto de alelos e tamanhos para a consulta de proteinas.
 * Essa classe faz com que seja consultado penas os alelos e tamanhos comuns a todos, ou seja, a partir do alelo e tamanho informa qual(s)  sites poderam ser consultados. 
 */
package epibot.WebRobots.RegrasSitesPreditores;

import java.util.ArrayList;

/**
 *
 * @author Rafael Tosta
 */
public class RegraDosSites {

    /**
     * Regra para a busca referente ao sites no banco
     *
     * @param tamanho Tamanhp do epítopo
     * @param alelo Alelo
     * @return
     */
    public static ArrayList<String> getRegra(String tamanho, String alelo) {
        ArrayList<String> regra = new ArrayList<String>();

        if (tamanho.equals("8")) {
            // Para todos os sites Kb e Kk
            if (alelo.equals("H2-Kb") || alelo.equals("H2-Kk")) {
                regra.add("Bimas");
                // regra.add("SVMHC");
                regra.add("NETMHC");
                regra.add("SYFPEITHI");
            }
            // NETMHC e Bimas Kd
            if (alelo.equals("H2-Kd")) {
                regra.add("Bimas");
                regra.add("NETMHC");
            }
            regra.add("IEDB_consensus");

        }

        if (tamanho.equals("9")) {
            // Para todos os sites Kd
            if (alelo.equals("H2-Kd")) {
                // regra.add("IEDB_consensus");
                regra.add("Bimas");
                //  regra.add("SVMHC");
                regra.add("SYFPEITHI");
                regra.add("NETMHC");
                regra.add("IEDB_consensus");
            }
            // Bimas/IEDB Kb,Kk
            if (alelo.equals("H2-Kb") || alelo.equals("H2-Kk")) {
                // regra.add("IEDB_consensus");
                regra.add("Bimas");
                regra.add("NETMHC");
                regra.add("IEDB_consensus");
            }
            if (alelo.equals("H2-Kk")) {
                regra.add("SYFPEITHI");
                regra.add("IEDB_consensus");
            }

            //bimas
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A0205")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B2702")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B3701")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5102")
                    || alelo.equals("HLA-B5103")
                    || alelo.equals("HLA-B5201")
                    || alelo.equals("HLA-B5801")) {
                regra.add("Bimas");
            }
            // IEDB consensus
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A0205")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B2702")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B3701")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5102")
                    || alelo.equals("HLA-B5103")
                    || alelo.equals("HLA-B5201")
                    || alelo.equals("HLA-B5801")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1402")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B1510")
                    || alelo.equals("HLA-B2709")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4101")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-B4701")
                    || alelo.equals("HLA-B4901")
                    || alelo.equals("HLA-B5001")
                    || alelo.equals("HLA-A0101")
                    || alelo.equals("HLA-A0202")
                    || alelo.equals("HLA-A0203")
                    || alelo.equals("HLA-A0206")
                    || alelo.equals("HLA-A0211")
                    || alelo.equals("HLA-A0212")
                    || alelo.equals("HLA-A0216")
                    || alelo.equals("HLA-A0219")
                    || alelo.equals("HLA-A0250")
                    || alelo.equals("HLA-A0301")
                    || alelo.equals("HLA-A2301")
                    || alelo.equals("HLA-A2403")
                    || alelo.equals("HLA-A2501")
                    || alelo.equals("HLA-A2601")
                    || alelo.equals("HLA-A2602")
                    || alelo.equals("HLA-A2603")
                    || alelo.equals("HLA-A2902")
                    || alelo.equals("HLA-A3001")
                    || alelo.equals("HLA-A3002")
                    || alelo.equals("HLA-A3201")
                    || alelo.equals("HLA-A3301")
                    || alelo.equals("HLA-A6802")
                    || alelo.equals("HLA-A6901")
                    || alelo.equals("HLA-A8001")
                    || alelo.equals("HLA-B0801")
                    || alelo.equals("HLA-B0802")
                    || alelo.equals("HLA-B0803")
                    || alelo.equals("HLA-B1502")
                    || alelo.equals("HLA-B1503")
                    || alelo.equals("HLA-B1509")
                    || alelo.equals("HLA-B1517")
                    || alelo.equals("HLA-B1801")
                    || alelo.equals("HLA-B2703")
                    || alelo.equals("HLA-B4002")
                    || alelo.equals("HLA-B4601")
                    || alelo.equals("HLA-B4801")
                    || alelo.equals("HLA-B5301")
                    || alelo.equals("HLA-B5401")
                    || alelo.equals("HLA-B5701")
                    || alelo.equals("HLA-B7301")) {
                regra.add("IEDB_consensus");
            }

            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5801")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-A0101")
                    || alelo.equals("HLA-A0202")
                    || alelo.equals("HLA-A0203")
                    || alelo.equals("HLA-A0206")
                    || alelo.equals("HLA-A0211")
                    || alelo.equals("HLA-A0212")
                    || alelo.equals("HLA-A0216")
                    || alelo.equals("HLA-A0219")
                    || alelo.equals("HLA-A0250")
                    || alelo.equals("HLA-A0301")
                    || alelo.equals("HLA-A2301")
                    || alelo.equals("HLA-A2403")
                    || alelo.equals("HLA-A2501")
                    || alelo.equals("HLA-A2601")
                    || alelo.equals("HLA-A2602")
                    || alelo.equals("HLA-A2603")
                    || alelo.equals("HLA-A2902")
                    || alelo.equals("HLA-A3001")
                    || alelo.equals("HLA-A3002")
                    || alelo.equals("HLA-A3201")
                    || alelo.equals("HLA-A3301")
                    || alelo.equals("HLA-A6802")
                    || alelo.equals("HLA-A6901")
                    || alelo.equals("HLA-A8001")
                    || alelo.equals("HLA-B0801")
                    || alelo.equals("HLA-B0802")
                    || alelo.equals("HLA-B0803")
                    || alelo.equals("HLA-B1502")
                    || alelo.equals("HLA-B1503")
                    || alelo.equals("HLA-B1509")
                    || alelo.equals("HLA-B1517")
                    || alelo.equals("HLA-B1801")
                    || alelo.equals("HLA-B2703")
                    || alelo.equals("HLA-B4002")
                    || alelo.equals("HLA-B4601")
                    || alelo.equals("HLA-B4801")
                    || alelo.equals("HLA-B5301")
                    || alelo.equals("HLA-B5401")
                    || alelo.equals("HLA-B5701")
                    || alelo.equals("HLA-B7301")) {
                regra.add("NETMHC");
            }
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1402")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B1510")
                    || alelo.equals("HLA-B2709")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4101")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-B4701")
                    || alelo.equals("HLA-B4901")
                    || alelo.equals("HLA-B5001")) {
                regra.add("SYFPEITHI");
            }

        }

        if (tamanho.equals("10")) {
            // Bimas/IEDB Kb,Kd,Kk
            if (alelo.equals("H2-Kb")) {
                // regra.add("IEDB_consensus");
                regra.add("Bimas");
            }
            if (alelo.equals("H2-Kd")) {
                regra.add("SYFPEITHI");
                regra.add("Bimas");
            }
            regra.add("IEDB_consensus");
            regra.add("NETMHC");
            //bimas
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A0205")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B2702")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B3701")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5102")
                    || alelo.equals("HLA-B5103")
                    || alelo.equals("HLA-B5201")
                    || alelo.equals("HLA-B5801")) {
                regra.add("Bimas");
            }

            // IEDB consensus
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A0205")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B2702")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B3701")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5102")
                    || alelo.equals("HLA-B5103")
                    || alelo.equals("HLA-B5201")
                    || alelo.equals("HLA-B5801")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1402")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B1510")
                    || alelo.equals("HLA-B2709")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4101")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-B4701")
                    || alelo.equals("HLA-B4901")
                    || alelo.equals("HLA-B5001")
                    || alelo.equals("HLA-A0101")
                    || alelo.equals("HLA-A0202")
                    || alelo.equals("HLA-A0203")
                    || alelo.equals("HLA-A0206")
                    || alelo.equals("HLA-A0211")
                    || alelo.equals("HLA-A0212")
                    || alelo.equals("HLA-A0216")
                    || alelo.equals("HLA-A0219")
                    || alelo.equals("HLA-A0250")
                    || alelo.equals("HLA-A0301")
                    || alelo.equals("HLA-A2301")
                    || alelo.equals("HLA-A2403")
                    || alelo.equals("HLA-A2501")
                    || alelo.equals("HLA-A2601")
                    || alelo.equals("HLA-A2602")
                    || alelo.equals("HLA-A2603")
                    || alelo.equals("HLA-A2902")
                    || alelo.equals("HLA-A3001")
                    || alelo.equals("HLA-A3002")
                    || alelo.equals("HLA-A3201")
                    || alelo.equals("HLA-A3301")
                    || alelo.equals("HLA-A6802")
                    || alelo.equals("HLA-A6901")
                    || alelo.equals("HLA-A8001")
                    || alelo.equals("HLA-B0801")
                    || alelo.equals("HLA-B0802")
                    || alelo.equals("HLA-B0803")
                    || alelo.equals("HLA-B1502")
                    || alelo.equals("HLA-B1503")
                    || alelo.equals("HLA-B1509")
                    || alelo.equals("HLA-B1517")
                    || alelo.equals("HLA-B1801")
                    || alelo.equals("HLA-B2703")
                    || alelo.equals("HLA-B4002")
                    || alelo.equals("HLA-B4601")
                    || alelo.equals("HLA-B4801")
                    || alelo.equals("HLA-B5301")
                    || alelo.equals("HLA-B5401")
                    || alelo.equals("HLA-B5701")
                    || alelo.equals("HLA-B7301")) {
                regra.add("IEDB_consensus");
            }

            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A3101")
                    || alelo.equals("HLA-B3501")
                    || alelo.equals("HLA-B4403")
                    || alelo.equals("HLA-B5801")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-A0101")
                    || alelo.equals("HLA-A0202")
                    || alelo.equals("HLA-A0203")
                    || alelo.equals("HLA-A0206")
                    || alelo.equals("HLA-A0211")
                    || alelo.equals("HLA-A0212")
                    || alelo.equals("HLA-A0216")
                    || alelo.equals("HLA-A0219")
                    || alelo.equals("HLA-A0250")
                    || alelo.equals("HLA-A0301")
                    || alelo.equals("HLA-A2301")
                    || alelo.equals("HLA-A2403")
                    || alelo.equals("HLA-A2501")
                    || alelo.equals("HLA-A2601")
                    || alelo.equals("HLA-A2602")
                    || alelo.equals("HLA-A2603")
                    || alelo.equals("HLA-A2902")
                    || alelo.equals("HLA-A3001")
                    || alelo.equals("HLA-A3002")
                    || alelo.equals("HLA-A3201")
                    || alelo.equals("HLA-A3301")
                    || alelo.equals("HLA-A6802")
                    || alelo.equals("HLA-A6901")
                    || alelo.equals("HLA-A8001")
                    || alelo.equals("HLA-B0801")
                    || alelo.equals("HLA-B0802")
                    || alelo.equals("HLA-B0803")
                    || alelo.equals("HLA-B1502")
                    || alelo.equals("HLA-B1503")
                    || alelo.equals("HLA-B1509")
                    || alelo.equals("HLA-B1517")
                    || alelo.equals("HLA-B1801")
                    || alelo.equals("HLA-B2703")
                    || alelo.equals("HLA-B4002")
                    || alelo.equals("HLA-B4601")
                    || alelo.equals("HLA-B4801")
                    || alelo.equals("HLA-B5301")
                    || alelo.equals("HLA-B5401")
                    || alelo.equals("HLA-B5701")
                    || alelo.equals("HLA-B7301")) {
                regra.add("NETMHC");
            }
            if (alelo.equals("HLA-A0201")
                    || alelo.equals("HLA-A1101")
                    || alelo.equals("HLA-B2705")
                    || alelo.equals("HLA-B3801")
                    || alelo.equals("HLA-B3901")
                    || alelo.equals("HLA-B3902")
                    || alelo.equals("HLA-B5101")
                    || alelo.equals("HLA-A2402")
                    || alelo.equals("HLA-A6801")
                    || alelo.equals("HLA-B0702")
                    || alelo.equals("HLA-B1402")
                    || alelo.equals("HLA-B1501")
                    || alelo.equals("HLA-B1510")
                    || alelo.equals("HLA-B2709")
                    || alelo.equals("HLA-B4001")
                    || alelo.equals("HLA-B4101")
                    || alelo.equals("HLA-B4402")
                    || alelo.equals("HLA-B4501")
                    || alelo.equals("HLA-B4701")
                    || alelo.equals("HLA-B4901")
                    || alelo.equals("HLA-B5001")) {
                regra.add("SYFPEITHI");
            }
        }

        if (tamanho.equals("11")) {
            // Bimas/IEDB Kb,Kk
            if (alelo.equals("H2-Kb") || alelo.equals("H2-Kk")) {
                regra.add("IEDB_consensus");
            }
            regra.add("NETMHC");
        }
        return regra;
    }

    /**
     * Generaliza todos os alelo, ou seja, concatena todos os alelos de todos os
     * sites
     *
     * @return
     */
    public static String[] getPaserAleloTodosOsSites() {
        String[] alelos = {"H2-Kb", "H2-Kd", "H2-Kk",
            "HLA-A0101",
            "HLA-A0201",
            "HLA-A0202",
            "HLA-A0203",
            "HLA-A0205",
            "HLA-A0206",
            "HLA-A0211",
            "HLA-A0212",
            "HLA-A0216",
            "HLA-A0219",
            "HLA-A0250",
            "HLA-A0301",
            "HLA-A1101",
            "HLA-A2301",
            "HLA-A2402",
            "HLA-A2403",
            "HLA-A2501",
            "HLA-A2601",
            "HLA-A2602",
            "HLA-A2603",
            "HLA-A2902",
            "HLA-A3001",
            "HLA-A3002",
            "HLA-A3101",
            "HLA-A3201",
            "HLA-A3301",
            "HLA-A6801",
            "HLA-A6802",
            "HLA-A6901",
            "HLA-A8001",
            "HLA-B0702",
            "HLA-B0801",
            "HLA-B0802",
            "HLA-B0803",
            "HLA-B1402",
            "HLA-B1501",
            "HLA-B1502",
            "HLA-B1503",
            "HLA-B1509",
            "HLA-B1510",
            "HLA-B1517",
            "HLA-B1801",
            "HLA-B2702",
            "HLA-B2703",
            "HLA-B2705",
            "HLA-B2709",
            "HLA-B3501",
            "HLA-B3701",
            "HLA-B3801",
            "HLA-B3901",
            "HLA-B3902",
            "HLA-B4001",
            "HLA-B4002",
            "HLA-B4101",
            "HLA-B4402",
            "HLA-B4403",
            "HLA-B4501",
            "HLA-B4601",
            "HLA-B4701",
            "HLA-B4801",
            "HLA-B4901",
            "HLA-B5001",
            "HLA-B5101",
            "HLA-B5102",
            "HLA-B5103",
            "HLA-B5201",
            "HLA-B5301",
            "HLA-B5401",
            "HLA-B5701",
            "HLA-B5801",
            "HLA-B7301"};
        return alelos;
    }

    /**
     * Define todos os tamanhos possiveis para a consulta
     *
     * @return
     */
    public static String[] getPaserTamanhoTodosOsSites() {
        String[] tam = new String[4];
        tam[0] = "8";
        tam[1] = "9";
        tam[2] = "10";
        tam[3] = "11";

        return tam;
    }
}
